package fun.werfamily.wf.user.core.domain.service;

import com.baomidou.mybatisplus.extension.service.IService;
import fun.werfamily.wf.user.core.domain.dto.req.*;
import fun.werfamily.wf.user.core.domain.dto.resp.UserInfoDTO;
import fun.werfamily.wf.user.core.infrastructure.dataobject.UserDO;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

/**
 * @Author: Mr.WenMing Zhang
 * @Date: 2022/07/26 13:36
 * @Description:
 **/
public interface IUserService extends IService<UserDO> {

    /**
     * 用户注册
     *
     * @param userRegisterReqDTO
     * @return
     */
    UserInfoDTO register(UserRegisterReqDTO userRegisterReqDTO);

    /**
     * 重置密码
     *
     * @param userResetPwdReqDTO
     * @return
     */
    Boolean resetPassword(UserResetPwdReqDTO userResetPwdReqDTO);

    /**
     * 用户登录
     *
     * @param userLoginReqDTO
     * @return
     */
    String login(UserLoginReqDTO userLoginReqDTO);

    /**
     * 发送验证码
     *
     * @param verifyCodeReqDTO
     * @return
     */
    Boolean sendVerifyCode(VerifyCodeReqDTO verifyCodeReqDTO);

    /**
     * 校验验证码
     *
     * @param verifyCodeReqDTO
     * @return
     */
    Boolean checkVerifyCode(VerifyCodeReqDTO verifyCodeReqDTO);

    /**
     * 用户详情
     * @param userInfoReqDTO
     * @return
     */
    UserInfoDTO info(UserInfoReqDTO userInfoReqDTO);

    /**
     * 发送图片验证码
     * @param mobile
     * @param key
     * @param response
     * @return
     */
    Boolean sendPicVerifyCode(String mobile, String key, HttpServletResponse response);

    /**
     * 校验图片验证码
     * @param mobile
     * @param key
     * @param picCode
     * @return
     */
    Boolean checkPicVerifyCode(String mobile, String key, String picCode);

    /**
     * token获取用户信息
     * @param httpServletRequest
     * @return
     */
    UserInfoDTO userInfoByToken(HttpServletRequest httpServletRequest);
}
